package cn.hchaojie.javase.day03;

import java.util.Arrays;

import org.junit.Test;

public class DemoArray {
	@Test
	public void test1() {
		int x1 = 1;
		int x2 = 2;
		int x3 = 3;
		
		// int x1 = 1, x2 = 2, x3 = 3;
		
		// 数组，也是一个容器，可以在一个变量里面保存多个值，每个值都有一个编号（下标、索引）
		int[] array = new int[3];
		array[0] = 1;		// 放数据
		array[1] = 2;
		array[2] = 3;
		
		
		System.out.println(array[0]);	// 取数据
		System.out.println(array[1]);
		System.out.println(array[2]);
		
		// 编号不能超出范围
		// 代码有异常，程序就会结束，后面的代码就不会执行
		// System.out.println(array[3]);		// 会有异常(ArrayIndexOutOfBoundsException：数组下标越界异常)抛出，

		// 判断数组长度 array.length
		System.out.println(array.length);		// 数组范围[0, array.length)
		
		// x1, x2, x3 是基本类型的变量
		// array是个对象类型的变量，对象有属性，可以通过 对象.属性的方式访问属性
	}
	
	@Test
	public void test2() {
		// 数组初始化
		int[] array = {1, 2, 3};
		double[] doubleArray = {1.0, 2.0, 3.0};
		char[] charArray = {'A', 'B', 'C'};
		
		// 使用循环遍历数组
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
		
		// 使用foreach循环、增强的for循环
		for (int element : array) {	// element每次遍历的时候，会被赋值为数组里面的当前遍历元素
			System.out.println(element);
		}
		
		for (char element : charArray) {
			System.out.println(element);
		}
	}
	
	// 找出数组里面的最大值
	@Test
	public void test3() {
		int[] array = {80, 50, 2, 100, 233, 77};
		
		int max = array[0];
		for (int i = 1; i < array.length; i++) {
			// 如果当前元素比max大，就把max设置为当前元素
			if (max < array[i]) {
				max = array[i];
			}
		}
		
		System.out.println(max);
	}
	
	// 打印数组
	@Test
	public void test4() {
		int[] array = {1, 2, 3};
		double[] doubleArray = {1.0, 2.0, 3.0};
		char[] charArray = {'A', 'B', 'C'};
		
		// Arrays.toString([])  把数组转化成字符串
		System.out.println(array);		// 打印的数组的内存地址
		System.out.println(Arrays.toString(array));
		System.out.println(Arrays.toString(doubleArray));
		System.out.println(Arrays.toString(charArray));

	}
}
